home *** CD-ROM | disk | FTP | other *** search
/ FM Towns: Free Software Collection 10 / FM Towns Free Software Collection 10.iso / ms_dos / tool / conhlp03 / fswchsrc / str.c < prev   
Text File  |  1994-11-16  |  1KB  |  73 lines

  1. /*
  2.     str.c
  3.     文字列の関数
  4. */
  5.  
  6. #define NULL (0)
  7. #define OFF (0)
  8. #define ON (1)
  9.  
  10. int instr( char a, const char *s ){ /* 文字列sの文字aの位置 */
  11.     int i;
  12.     for(i=0;s[i]!=NULL;i++)
  13.         if(s[i]==a) return i+1;
  14.     return NULL;
  15. }
  16.  
  17. int split( char *s, char **str, const char *sep){ /* 文字の切り分け */
  18.     int c = 0,f = OFF;
  19.     str[c] = s;
  20.     while( *++s != NULL ){
  21.         if(*s>0x80 && *s<0xa0
  22.             || *s>0xdf && *s<0xf0 ){ /* 全角文字なら */
  23.             if(f==ON)
  24.                 str[++c]=s++;
  25.             f=OFF;
  26.             continue;
  27.         }
  28.         if(instr(*s,sep)){ /* セパレート文字なら */
  29.             if(f==OFF)
  30.                 *s=NULL;
  31.             f=ON;
  32.         } else {
  33.             if(f==ON)
  34.                 str[++c]=s;
  35.             f=OFF;
  36.         }
  37.     }
  38.     return c+1;
  39. }
  40.  
  41. int strcmp( const char *a,const char *b){
  42.     for( ;*a!=NULL && *b!=NULL;a++,b++)
  43.         if(*a!=*b) break;
  44.     return *b-*a;
  45. }
  46.  
  47. char *strcpy( char *a,const char *b){ /* 文字列のコピー */
  48.     char *c;
  49.     c=a;
  50.     while(*b!=NULL) *c++=*b++;
  51.     *c=NULL;
  52.     return a;
  53. }
  54.  
  55. char *strcat( char *a,const char *b){ /* 文字列の連結 */
  56.     char *c;
  57.     c=a;
  58.     while(*c!=NULL) c++; /* 最後まで進める */
  59.     while(*b!=NULL) *c++=*b++;
  60.     *c=NULL;
  61.     return a;
  62. }
  63.  
  64. char *koumoku( char *k ){ /* 項目とりだし */
  65.     char *h;
  66.     for(h=k; *k >= 'A' && *k <='Z' ;k++); /* 大文字であるなら */
  67.     if(h==k) return NULL; /* エラー */
  68.     while( instr(*k,"\t: ")) *k++ = NULL;
  69.     for(h=k;*h!=NULL;h++)
  70.         if(*h=='\n') *h=NULL; /* 改行コードを 消す */
  71.     return k;        /* 返り値は本体のポインタ */
  72. }
  73.